// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
import axios from 'axios'
// 引入状态管理
import store from './vuex/store'
// 引入icon
import './assets/icon/iconfont.css'

// 引入echarts
import echarts from 'echarts'

// 引入vue-amap
import VueAMap from 'vue-amap'

// 过滤器
import * as custom from './utils/util'
Vue.prototype.$echarts = echarts
Vue.use(VueAMap)
// 初始化vue-amap
VueAMap.initAMapApiLoader({
  // 高德的key
  key: '540c63c5d21174b737484ceef57fc061',
  // 插件集合
  plugin: [
    'AMap.Geolocation',
    'AMap.Scale',
    'AMap.Autocomplete',
    'AMap.PlaceSearch',
    'AMap.OverView',
    'AMap.ToolBar',
    'AMap.MapType',
    'AMap.PolyEditor',
    'AMap.CircleEditor'
  ],
  // plugin: ['AMap.Autocomplete', 'AMap.PlaceSearch', 'AMap.Scale', 'AMap.OverView', 'AMap.ToolBar', 'AMap.MapType', 'AMap.Geolocation', 'AMap.Geocoder', 'AMap.AMapManager', 'AMap.Marker'],
  // plugin: ['AMap.Scale', 'AMap.OverView', 'AMap.ToolBar', 'AMap.MapType', 'AMap.PlaceSearch', 'AMap.Geolocation', 'AMap.Geocoder'],
  // 高德 sdk 版本，默认为 1.4.4
  v: '1.4.4',
  uiVersion: '1.0'
})

Object.keys(custom).forEach(key => {
  Vue.filter(key, custom[key])
})

// 路由拦截器
router.beforeEach((to, from, next) => {
  if (to.matched.length != 0) {
    if (to.meta.requireAuth) { // 判断该路由是否需要登录权限
      if (Boolean(localStorage.getItem('userInfo'))) { // 通过vuex state获取当前的user是否存在
        next()
      } else {
        next({
          path: '/login',
          query: { redirect: to.fullPath } // 将跳转的路由path作为参数，登录成功后跳转到该路由
        })
      }
    } else {
      if (Boolean(localStorage.getItem('userInfo'))) { // 判断是否登录
        if (to.path != '/' && to.path != '/login') { // 判断是否要跳到登录界面
          next()
        } else {
          /**
           * 防刷新，如果登录，修改路由跳转到登录页面，修改路由为登录后的首页
           */
          next({
            path: 'siteconfig/site'
          })
        }
      } else {
        next()
      }
    }
  } else {
    next({
      path: '/login',
      query: { redirect: to.fullPath } // 将跳转的路由path作为参数，登录成功后跳转到该路由
    })
  }
})

Vue.config.productionTip = false
Vue.use(ElementUI, { size: 'small', zIndex: 3000 })
Vue.prototype.$axios = axios // 配置全局可用 命令npm install axios
axios.defaults.baseURL = '/api' // 设定需要被替换的参数
/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  store, // 使用store vuex状态管理
  components: { App },
  template: '<App/>',
  data: {
    // 空的实例放到根组件下，所有的子组件都能调用
    Bus: new Vue()
  }

})
// new Vue({
//   // el: '#app',
//   router: router, // 使用路由
//   render: h => h(App) // 渲染App
//   /* 1)render: function(createElement){
//       return createElement(App)
//       }
//       2) render(createElement){
//       return createElement(App)
//       }
//       3)render(h){
//       return h(App)
//       }
//       4) h => h(App)
//    */
//   // components: { App },
//   // template: '<App/>'
// }).$mount('#app') // 路由的实例注入到vue根实例
